home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / a_utils / _archvrs / unix / shar.lha / shar / host.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-12-03  |  1.6 KB  |  94 lines

  1. /*
  2. **  Return name of this host.  Something for everyone.
  3. */
  4. /* LINTLIBRARY */
  5. #include "shar.h"
  6. RCS("$Header: host.c,v 1.5 87/03/02 11:03:26 rs Exp $")
  7.  
  8.  
  9. #ifdef    HOST
  10. char *
  11. Host()
  12. {
  13.     return(HOST);
  14. }
  15. #endif    /* HOST */
  16.  
  17.  
  18. #ifdef    GETHOSTNAME
  19. char *
  20. Host()
  21. {
  22.     static char         buff[64];
  23.  
  24.     return(gethostname(buff, sizeof buff) < 0 ? "SITE" : buff);
  25. }
  26. #endif    /* GETHOSTNAME */
  27.  
  28.  
  29. #ifdef    UNAME
  30. #include <sys/utsname.h>
  31. char *
  32. Host()
  33. {
  34.     static struct utsname     U;
  35.  
  36.     return(uname(&U) < 0 ? "SITE" : U.nodename);
  37. }
  38. #endif    /* UNAME */
  39.  
  40.  
  41. #ifdef    UUNAME
  42. extern FILE    *popen();
  43. char *
  44. Host()
  45. {
  46.     static char         buff[50];
  47.     char        *p;
  48.  
  49.     if (F = popen("exec uuname -l", "r")) {
  50.     if (fgets(buff, sizeof buff, F) == buff && (p = IDX(name, '\n'))) {
  51.         (void)pclose(F);
  52.         *p = '\0';
  53.         return(buff);
  54.     }
  55.     (void)pclose(F);
  56.     }
  57.     return("SITE");
  58. }
  59. #endif    /* UUNAME */
  60.  
  61.  
  62. #ifdef    WHOAMI
  63. char *
  64. Host()
  65. {
  66.     static char         name[64];
  67.     register FILE    *F;
  68.     register char    *p;
  69.     char         buff[100];
  70.  
  71.     /* Try /etc/whoami; look for a single well-formed line. */
  72.     if (F = fopen("/etc/whoami", "r")) {
  73.     if (fgets(name, sizeof name, F) && (p = IDX(name, '\n')))
  74.         (void)fclose(F);
  75.         *p = '\0';
  76.         return(name);
  77.     }
  78.     (void)fclose(F);
  79.     }
  80.  
  81.     /* Try /usr/include/whoami.h; look for #define sysname "foo" somewhere. */
  82.     if (F = fopen("/usr/include/whoami.h", "r")) {
  83.     while (fgets(buff, sizeof buff, F))
  84.         /* I don't like sscanf, nor do I trust it.  Sigh. */
  85.         if (sscanf(buff, "#define sysname \"%[^\"]\"", name) == 1) {
  86.         (void)fclose(F);
  87.         return(name);
  88.         }
  89.     (void)fclose(F);
  90.     }
  91.     return("SITE");
  92. }
  93. #endif /* WHOAMI */
  94.